const fs = require ('fs'); // fs 是nodejs的文件操作模块
const path = require('path') // path 是nodejs的文件路径模块

//  promise 方式获取一个文件的内容
const getFileContent = (fileName) => {
  const promise = new Promise((resolve, reject) => {
    const fullFileName = path.resolve(__dirname, 'files', fileName);
    console.log('fullFileName-- ', fullFileName);
    // /Users/wangnan/Downloads/nodejs-blog/blog-1/promise-test/files/a.json
    fs.readFile(fullFileName, (err, data) => {
      if(err) {
        reject(err);
        return;
      };
      resolve(
        JSON.parse(data.toString())
      ); //  toString() 返回该对象的字符串
    });
  });
  return promise;
};

getFileContent('a.json').then(aData => {
  console.log('a Data: ', aData);
  return getFileContent(aData.next);
}).then(bData => {
  console.log('b Data: ', bData);
  return getFileContent(bData.next);
}).then(cData => {
  console.log('c Data: ', cData);
})

// // callback 方式获取一个文件的内容
// const getFileContent = (fileName, callback) => {
//   const fullFileName = path.resolve(__dirname, 'files', fileName);
//   console.log('fullFileName-- ', fullFileName);
//   // /Users/wangnan/Downloads/nodejs-blog/blog-1/promise-test/files/a.json
//   fs.readFile(fullFileName, (err, data) => {
//     if(err) {
//       console.error(err);
//       return;
//     };
//     callback(
//       JSON.parse(data.toString())
//     ); //  toString() 返回该对象的字符串
//   });
// }

// // 测试 callback-hell
// getFileContent('a.json', aData => {
//   console.log('a Data: ', aData);
//   getFileContent(aData.next, bData => {
//     console.log('b Data: ', bData);
//     getFileContent(bData.next, cData => {
//       console.log('c Data: ', cData);
//     });
//   });
// })